back to index.

Assembled - Onsite Postmortem

My onsite with Assembled was last Friday. Good experience. Happy with how I did, even if I don't end up getting an offer.

First Technical Portion - Javascript

The first task was to implement a clone of some of their app's functionality. I got off to a bit of a rocky start, getting hung up on debugging something that I thought was wrong but was actually right. I must have wasted ten or fifteen minutes at this before one of the interviewers very politely asked was I sure it was wrong. It wasn't wrong.

I think using canvas for this was the right choice, it was a very custom widget, and I would have spent a ton of time grappling with the DOM trying to get things working correctly. I should have stored some of the values I calculated to help me as fields in the objects, which would have simplified it a bit if I got to extending it and making it interactive.

Thinking further, I really missed the more structured environment of C# when working on this. Having to define things in classes before I just went ahead and did everything sort of cut me at the knees, it would have been more useful to define the classes, make all my necessary helper functions for them, and then implement that. It's just a headspace thing and I can do it all in javascript, but when under pressure, I just skipped over any sort of good architecture for things and did some fly by the seat of my pants work that while working, wasn't a good example of what I can really do. It's just discipline really. This was the start of the day and I knew this was the part most relevant to the job, so I got a bit flustered and worried if I didn't just start that I would stall and make a mess of everything.

Second Technical Portion

The second problem was a key value store with functionality to check values by time. I did much better on this. I first implemented a basic version where it just kept a store of what was going on based on transactions, before extending it to get values at arbitrary points in time. The time one required refactoring to get the relevant store by going through each slice, and checking if it was the most recent one before the desired time to grab. This went well, I was happy with my solution during the interview and the problem was interesting.

If I were to go over it again, I think I would work it out a different way though. Keeping a full clone of the database for each change is naive, and will consume a ton of memory. If instead I were to keep a stack of commands that modified things then we would only need to keep the most recent store. When we look for a previous version, we just run back through the commands undoing the changes that they did, and return the resulting store. This could be an interesting weekend project.

Non Technical

After this I had a general interview with the head of the company on my background, work history and why tech. This is obviously the most familiar to me due to it being the most like my previous interviews for architecture and any of the other jobs I've had. It went well enough, lots of questions regarding work style, my current office, and things of that sort.

Project Walkthrough

For the project walkthrough I used piaine, not the best choice of project in hindsight due to it being a bit too simple / entirely a personal project, but this went ok too. I ran through a quick demo of it, showing a site being generated. I then walked through the code, trying to go as things are called, made easier by the code itself being very procedural. The interviewer asked me a bunch of questions at every stage, to which I maybe had half intelligent answers half of the time. These mainly revolved around the parsing architecture, and possible revisions / updates to it. I definitely should have used something that was worked on with other people, but nothing seemed to fit the bill in terms of a larger impact from me, and a non-trivial project. Then there was again a bit of a grilling on why tech. Again, I was happy enough with this portion.

Conclusion

Overall I really enjoyed the process. This was my first real technical interview, and every round I've got through has been a bit of a confirmation that I'm not a million miles off the skill level. It's shown me there are a ton of gaps in what I know, but I'm happy with my general process going into each of the problem sets. Everyone I've been in touch with from the company has been very on the ball, very engaged.

There was always a bit of a worry in the back of my mind that I'm an absolute spoofer with a vastly inflated sense of self. I mean, that's probably still true, but maybe not so much in terms of programming. No word yet anyway in terms of if I'm getting an offer, but it's been a good confidence boost regardless.


Comment